package mapper;

import org.apache.ibatis.annotations.Param;
import pojos.subject.ClassInfo;
import pojos.subject.ClassInfoManager;
import pojos.subject.UserRelationshipManager;
import pojos.teacher.TeacherInfo;

import java.util.List;

/**
 * 教师相关查询接口
 */
public interface TeacherMapper {

    /**
     * 查询所有教师基本信息
     */
    List<TeacherInfo> queryAllTeachersBaseInfo() throws Exception;

    /**
     * 查询教师登录名是否存在
     */
    Integer isLoginNameExist(String name) throws Exception;

    /**
     * 添加教师信息
     */
    void addTeacher(TeacherInfo teacherInfo) throws Exception;

    /**
     * 查询所有教师登录名、用户名
     */
    List<TeacherInfo> queryAllTeacherName() throws Exception;

    /**
     * 老师登录检查
     */
    TeacherInfo teacherLoginCheck(String userName) throws Exception;

    /**
     * 登录错误次数加一
     */
    void updateDayError(int id) throws Exception;

    /**
     * 系统锁定账户
     */
    void sysLockTeacher(int id) throws Exception;

    /**
     * 教师账户系统自动解锁
     */
    void sysAutoUnLock(int id) throws Exception;

    /**
     * 根据登录名称查询手机号
     */
    TeacherInfo queryPhoneByName(String name) throws Exception;

    /**
     * 教师修改基础信息
     */
    void teacherAlterBaseInfo(TeacherInfo teacherInfo) throws Exception;

    /**
     * 修改登录名称
     */
    void alterLoginName(TeacherInfo teacherInfo) throws Exception;

    /**
     * 修改登录密码
     */
    void alterLoginPassword(@Param("id") int id,@Param("password") String password) throws Exception;

    /**
     * 查询教师登录密码
     */
    String queryLoginPassword(@Param("id") int id) throws Exception;

    /**
     * 教师修改手机号
     */
    void alterPhone(TeacherInfo teacherInfo) throws Exception;

    /**
     * 教师修改QQ和微信
     */
    void alterConnectInfo(TeacherInfo teacherInfo) throws Exception;

    /**
     * 教师查询所有自己的关系信息
     */
    List<UserRelationshipManager> teacherQueryRelation(@Param("teacherId") int teacherId,
                                                       @Param("isEnable") int isEnable) throws Exception;

    /**
     * 教师添加课程信息
     */
    void teacherAddClass(ClassInfo classInfo) throws Exception;

    /**
     * 教师查找课程信息
     */
    ClassInfoManager queryClassInfo(@Param("classId") int classId, @Param("isEnable") int isEnable) throws Exception;

    /**
     * 教师修改课程信息
     */
    void alterClassInfo(ClassInfo classInfo) throws Exception;

    /**
     * 教师删除课程信息
     */
    void deleteClassInfo(int classId) throws Exception;

    /**
     * 查询教师当天课程信息
     */
    List<ClassInfoManager> queryTeacherCurrentClassInfo(int teacherId) throws Exception;
}
